home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / buffr2.zip / BD4_MAX.PAS < prev    next >
Pascal/Delphi Source File  |  1993-01-04  |  3KB  |  117 lines

  1. Unit BD4_Max; {Primitive 4-Dimensional BufferedArrays}
  2. {$R-}
  3.  
  4. INTERFACE
  5.  
  6. Uses BND_Max;
  7.  
  8. Type
  9.  
  10.   D4_BufferedArray = Object (BN_Max)
  11.  
  12.                    Procedure Init (ElementsPerDimension : DimensionPtr;
  13.                                   ElementSize : Word; MaxBuffSize : LongInt;
  14.                                   FileName : String);
  15.  
  16.                    Procedure Accept (W,X,Y,Z : LongInt; Var El; Size : Word);
  17.                                        {Assign the Addressed El}
  18.  
  19.                    Procedure Retrieve (W,X,Y,Z : LongInt; Var El; Size : Word);
  20.                                          {Get the Addressed El}
  21.  
  22.  
  23.                    Procedure Swap (W1,X1,Y1,Z1,W2,X2,Y2,Z2 : LongInt);
  24.                               {Swap the 1 and 2 Element}
  25.  
  26.                    Procedure Copy (From : D4_BufferedArray);
  27.                               {Target *MUST* already be initialized}
  28.                               {to the EXACT same parameters as From}
  29.                               {this will save checking for sufficient}
  30.                               {available Memory!}
  31.  
  32. (* no redefinition needed
  33.  
  34.  
  35.                    Function MaxIndex (Index : Byte) : LongInt;
  36.                                      {Return the Max legal Index}
  37.                                      {for the Indexth Dimension}
  38.  
  39.                    Function MaxSize : LongInt;
  40.                                       {Report Total Number of Array Elements}
  41.  
  42.                    Function ElemSize : Word;  {Report Element Size}
  43.  
  44.                    Procedure Destroy;
  45. *)
  46.           End; {D4_BufferedArray}
  47.  
  48.  
  49.  
  50. IMPLEMENTATION
  51.  
  52.  
  53. Procedure D4_BufferedArray.Init;
  54. Begin
  55.   BN_Max.Init (4,ElementsPerDimension,ElementSize,MaxBuffSize,FileName)
  56. End;
  57.  
  58. Procedure D4_BufferedArray.Accept (W,X,Y,Z : LongInt; Var El; Size : Word);
  59.                                        {Assign the Addressed El}
  60. Var
  61.   I : Byte;
  62. Begin
  63.   I := 0;
  64.   Add1^[I] := W;  {even with range-checking off, the}
  65.   I := 1;
  66.   Add1^[I] := X;  {compiler generates an error if}
  67.   I := 2;         {a constant is used here. Dunno why...}
  68.   Add1^[I] := Y;
  69.   I := 3;
  70.   Add1^[I] := Z;
  71.   BN_Max.Accept (El,Add1,4,Size)
  72. End;
  73.  
  74. Procedure D4_BufferedArray.Retrieve (W,X,Y,Z : LongInt; Var El; Size : Word);
  75.                                          {Get the Addressed El}
  76. Var
  77.   I : Byte;
  78. Begin
  79.   I := 0;
  80.   Add1^[I] := W;
  81.   I := 1;
  82.   Add1^[I] := X;
  83.   I := 2;
  84.   Add1^[I] := Y;
  85.   I := 3;
  86.   Add1^[I] := Z;
  87.   BN_Max.Retrieve (El,Add1,4,Size)
  88. End;
  89.  
  90. Procedure D4_BufferedArray.Swap (W1,X1,Y1,Z1,W2,X2,Y2,Z2 : LongInt);
  91.                               {Swap the 1 and 2 Element}
  92. Var
  93.   I : Byte;
  94. Begin
  95.   I := 0;
  96.   Add1^[I] := W1;
  97.   Add2^[I] := W2;
  98.   I := 1;
  99.   Add1^[I] := X1;
  100.   Add2^[I] := X2;
  101.   I := 2;
  102.   Add1^[I] := Y1;
  103.   Add2^[I] := Y2;
  104.   I := 3;
  105.   Add1^[I] := Z1;
  106.   Add2^[I] := Z2;
  107.   BN_Max.Swap (Add1,Add2,4)
  108. End;
  109.  
  110. Procedure D4_BufferedArray.Copy (From : D4_BufferedArray);
  111. {Redefined purely for type-checking}
  112. Begin
  113.   BN_Max.Copy (From)
  114. End;
  115.  
  116. BEGIN
  117. END.